package com.reportes;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.http.HttpServletRequest;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRResultSetDataSource;

import com.Reporte;
import com.util.Util;

import exceptions.InvalidArgumentException;

public class Parroquia extends Reporte {
	private static final String ID_ESTADO = "estado";
	private static final String ID_MUNICIPIO = "municipio";
	private String criterioSQL = " WHERE TRUE";

	@Override
	public void VerificarParametros(HttpServletRequest request)
			throws InvalidArgumentException {
		Integer id = Util.toInteger(request.getParameter(ID_MUNICIPIO));
		if (id != null){
			criterioSQL = " AND municipio.id= "+ id;
			return;
		}
		id = Util.toInteger(request.getParameter(ID_ESTADO));
		if (id != null){
			criterioSQL = " AND estado.id= "+ id;
			return;
		}
	}

	@Override
	public Object clone() throws CloneNotSupportedException {
		Parroquia reporte = new Parroquia();
		copyAttributesTo(reporte);
		return reporte;
	}

	@Override
	protected JRDataSource executeQuery(Connection connection)
			throws SQLException {
		StringBuffer sql =
			new StringBuffer("SELECT")
					.append(" Estado.codigo as ecodigo,")
					.append(" Estado.nombre as enombre,")
					.append(" Municipio.codigo as mcodigo,")
					.append(" Municipio.nombre as mnombre,")
					.append(" Parroquia.codigo as pcodigo,")
					.append(" Parroquia.nombre as pnombre,")
					.append(" Parroquia.poblacion as ppoblacion")
					.append(" FROM")
					.append(" estado")
					.append(" INNER JOIN municipio ON (estado.id = municipio.estado_id)")
					.append(" INNER JOIN parroquia ON (parroquia.municipio_id = municipio.id )")
					.append(criterioSQL)
					.append(" ORDER BY estado.nombre,municipio.nombre, parroquia.nombre");
		Statement statement = connection.createStatement();
		ResultSet rs = statement.executeQuery(sql.toString());
		return new JRResultSetDataSource(rs);
	}

}
